As the information age sets upon us, the amount of raw information at our fingertips seems to be growing at an incredible pace. The global Internet provides access to an increasing array of remote network computers or sites, each site having its own information content or data. This expansive trend with information is also apparent within the single computer. Computer hardware, such as hard disks and processors, has generally become less expensive and more powerful, which allows the physical limits of how much information is stored to increase. But there still looms a challenge: How can one use and present this information or data to a user without having to painstakingly sift through it all?
To effectively use this information, it can be categorized based upon one or more properties of the information. This is a straight-forward technique of organizing or categorizing data. It is relatively simple and effective when dealing with a small original data set and a selected property of the data set with which to create the whole categorized data set. For example, the original data set may be a set of tasks, each task having a particular priority (high, medium, or low). Each of the tasks may possibly be made up of other tasks. The original set of tasks may be categorized based upon a property (e.g., the priority of each task) to produce a categorized set of tasks according to that property. However, when categorizing using more than one property (such as priority and who is to perform the tasks), the categorized data set becomes larger. As the categorized data set becomes larger, creating and updating the categorized data set can become problematic because of the increased time and memory resources required.
Additionally, it may be desirable to list hierarchically-related data (such as tasks) more than once when categorized in order to show the parent/child relationships of the information. In the example mentioned above, a single task in the original set of tasks may be made up of two lower-level tasks. The single task and the lower-level tasks represent a parent/child relationship where the single task is the parent and two lower-level tasks are children. As a result, it may be desirable to list the single task along with the lower-level task whenever either of the lower-level tasks are listed within the categorized data set. This lets the user of the data gain an advantageous understanding of the relationships of the data. However, this type of listing also can enormously increase the size of the categorized data set resulting in problems when creating and updating the categorized data set. For example, the original data set may have 5000 data records. Each record may be grouped or categorized by three different properties to form a categorized data set. Given that each of these properties may have 100 different values, the size of the categorized data set becomes very large. Furthermore, with the possibility of having hierarchically-related records appearing more than once within the categorized data set, the size of the categorized data set can quickly become unmanageable.
Prior ways of manipulating large categorized data sets have required the entire categorized data set to be generated in memory. While this maintains the ability to quickly access any part of the categorized data set once the categorized data set is created, it quickly becomes undesirable because of the amount of processing time and memory space needed to create the categorized data set. Furthermore, the entire categorized data set is generally regenerated or recreated from the original data set when any part of the original data set is updated or edited. Faced with these problems, prior solutions have typically limited what is included and displayed as part of the categorized data set and how any properties are used when creating the categorized data set in order to maintain adequate functionality when manipulating the categorized data set. With these prior solutions, the amount of information of the information maintained in the categorized data set is reduced in favor of adequate ease of manipulation of the categorized data set. Thus, a user is not being able to display the hierarchical relationships between the data and not able to categorize the data beyond a restricted number of levels because of the data manipulation problems associated with large categorized data sets that would result.
Accordingly, there is a need for a system for efficiently manipulating large categorized data sets that does not take a burdensome amount of processing time and memory resources when creating the categorized data set. There is also a need for a system for efficiently updating a large categorized data set in response to changes in the original data set. Furthermore, there is a need for a way of displaying the relationships of the information contained within the categorized data set.